package fun.parser.postfix;

import java.util.Stack;

public class PostfixProgram {
    /*
     * TODO �ǲ���Ҫ����һ�£�����ʵ��һ�����������Stack�أ� ���ɣ�
     * 1�������Stack����Ҫ�߳�ͬ��
     * 2��java.util.Stack�����"���"�������������СȫȨ�޵�ԭ��
     * 3������ʵ��һ��������Ƶ�Stack���ܻ��������
     */
    private Stack<PostfixNode> postfix = null;

    public PostfixProgram(Stack<PostfixNode> postfix) {
	// ���ﱣ�����һ��������ʹ���������ʵ�����ǲ��ɱ��
	this.postfix = copyOf(postfix);
    }

    /*
     * ��postfix����������ÿ��ֻ�������һ������
     */
    public Stack<PostfixNode> getPostfix() {
	return copyOf(postfix);
    }

    public String toString() {
	StringBuilder b = new StringBuilder();
	for (int i = postfix.size() - 1; i >= 0; i--)
	    b.append(postfix.get(i)).append(' ');
	return b.toString();
    }

    private static <T> Stack<T> copyOf(Stack<T> source) {
	Stack<T> copy = new Stack<T>();
	for (T t : source)
	    copy.push(t);
	return copy;
    }
}
